#pragma once

#include <string>
#include "Bloco.h"
#include "Mineiro.h"

using namespace std;

class Tabuleiro
{
	int altura;
	int largura;
	int dificuldade;
	string nome;
	Bloco*** tabuleiro;
	Mineiro* mineiro;
	int tempo;

	void allocMemory(int altura, int largura);
	void criaBloco(int tipo, int i, int j);

public:
	Tabuleiro(string nome, int altura, int largura, int dificuldade = 0);
	Tabuleiro(string nome_ficheiro);
	~Tabuleiro(void);

	Bloco*** getTabuleiro();
	int getAltura();
	int getLargura();
	void addBloco(Bloco* bloco, int x, int y);
	void addMineiro(Bloco* posicao);
	Bloco* switchBloco(Bloco* blocoOriginal, int x, int y);
	void setMineiro(Bloco* posicao);
	Mineiro* getMineiro();
	bool aplicaGravidade();
	void aplicaGravidadePedra(Tabuleiro* tab);
	int getTempo();
	void avancaTempo();
	bool verificaVida();
	Bloco* aplicaViga(Bloco* blocoOriginal, int x, int y);
	Bloco* aplicaEscada(Bloco* blocoOriginal, int x, int y);
};